home *** CD-ROM | disk | FTP | other *** search
/ Usenet 1993 July / InfoMagic USENET CD-ROM July 1993.ISO / sources / unix / volume10 / lemming / part03 < prev    next >
Encoding:
Internet Message Format  |  1987-08-05  |  25.6 KB

  1. Path: uunet!rs
  2. From: rs@uunet.UU.NET (Rich Salz)
  3. Newsgroups: comp.sources.unix
  4. Subject: v10i093:  A graphics editor, Part03/04
  5. Message-ID: <779@uunet.UU.NET>
  6. Date: 6 Aug 87 20:33:02 GMT
  7. Organization: UUNET Communications Services, Arlington, VA
  8. Lines: 559
  9. Approved: rs@uunet.UU.NET
  10.  
  11. Submitted-by: "Alan W. Paeth" <awpaeth%watcgl.waterloo.edu@RELAY.CS.NET>
  12. Posting-number: Volume 10, Issue 93
  13. Archive-name: lemming/Part03
  14.  
  15. #! /bin/sh
  16. # This is a shell archive.  Remove anything before this line, then unpack
  17. # it by saving it into a file and typing "sh file".  To overwrite existing
  18. # files, type "sh file -c".  You can also feed this as standard input via
  19. # unshar, or by typing "sh <file", e.g..  If this archive is complete, you
  20. # will see the following message at the end:
  21. #        "End of shell archive."
  22. # Contents:  document
  23. # Wrapped by rs@uunet on Thu Aug  6 16:30:30 1987
  24. PATH=/bin:/usr/bin:/usr/ucb ; export PATH
  25. if test -f document -a "${1}" != "-c" ; then 
  26.   echo shar: Will not over-write existing file \"document\"
  27. else
  28. echo shar: Extracting \"document\" \(24201 characters\)
  29. sed "s/^X//" >document <<'END_OF_document'
  30. XFrom @RELAY.CS.NET:awpaeth@watcgl.waterloo.edu  Fri Jun 12 19:58:01 1987
  31. XReceived: from RELAY.CS.NET by uunet.UU.NET (5.54/1.14) 
  32. X    id AA01326; Fri, 12 Jun 87 19:58:01 EDT
  33. XReceived: from relay2.cs.net by RELAY.CS.NET id aa05579; 12 Jun 87 19:58 EDT
  34. XReceived: from waterloo by csnet-relay.csnet id ad24127; 12 Jun 87 19:47 EDT
  35. XReceived: from watcgl.uucp by watmath; Fri, 12 Jun 87 19:15:21 EDT
  36. XReceived: by watcgl; Fri, 12 Jun 87 19:17:07 EDT
  37. XFrom: "Alan W. Paeth" <awpaeth%watcgl.waterloo.edu@RELAY.CS.NET>
  38. XMessage-Id: <8706122317.AA01079@watcgl.uucp>
  39. XDate: 12 Jun 87 23:17:06 GMT
  40. XTo: comp-sources-unix%watmath.waterloo.edu@RELAY.CS.NET
  41. XSubject: Submission for comp-sources-unix
  42. XResponding-System: watcgl.UUCP
  43. XStatus: R
  44. X
  45. XPath: watcgl!awpaeth
  46. XFrom: awpaeth@watcgl.UUCP (Alan W. Paeth)
  47. XNewsgroups: comp.sources.unix
  48. XSubject: LEMMING [3-4]
  49. XMessage-ID: <1233@watcgl.UUCP>
  50. XDate: 12 Jun 87 23:17:04 GMT
  51. XDistribution: comp
  52. XOrganization: U of Waterloo, Ontario
  53. XLines: 500
  54. X
  55. X
  56. X           Lemming - Little Editor for Mice and other rodents.
  57. X
  58. X                          (c) Alan W. Paeth, 1987
  59. X          Computer Graphics Laboratory, University of Waterloo
  60. X
  61. X
  62. X
  63. X
  64. X[0] Overview
  65. X
  66. XThe lemming editor is an interactive package for editing simple (PIC-like)
  67. Xgraphics images. It presently runs under the Vax (Ikonas), VaxII (X-windows)
  68. Xand SUN (X-windows) environments. It is designed to be highly portable: it
  69. Xrequires a one button mouse and binary (one bitplane) display to operate.
  70. X
  71. XThe objects presently supported include lines, text, boxes and ellipses.
  72. XAttributes include dotted, dashed, text justification, various fonts, etc.
  73. XPIC output can be produced.
  74. X
  75. XFiles:
  76. X
  77. XImportant user files include:
  78. X
  79. Xlemik           # tty based Ikonas Frame Buffer executable
  80. Xlemx            # X-windows (GPXII,Sun) executable
  81. Xlemdoc          # this document
  82. X.lemrc          # standard defaults (not essential)
  83. X
  84. XIn addition, binary font files must be in place on the directory
  85. X/usr/local/lib/BFont/*. The path for this file is in "lemrc.c"
  86. X
  87. X[1] Command Summary
  88. X
  89. XMouse Actions:
  90. X
  91. X                              DISPLAY STATE
  92. X  
  93. X                       no       mark, no     mark and
  94. X                    |  mark   | selections | selections|
  95. X                 ---+---------+------------+-----------+
  96. X   M    click free  |  place  |   draw     |  move     |
  97. X                    |  mark   |   line     |  mark     |
  98. X   O             ---+---------+------------+-----------+
  99. X        click mark  |   --    |   remove the mark      |
  100. X   U                |         |                        |
  101. X                 ---+---------+------------+-----------+
  102. X   S    drag mark   |   --    | tug marked | move all  |
  103. X                    |         |  objects   | selections|
  104. X   E             ---+---------+------------+-----------+
  105. X        drag free   |   (de) select by rectangle area  |
  106. X                    |                                  |
  107. X                 ---+----------------------------------+  
  108. X
  109. X
  110. XKeyboard Actions:
  111. X
  112. X   ESC  Delete Mark; Deselect all
  113. X   TAB  Select marked obj (cyclically)
  114. X   BS   Backspace input text
  115. X   CR   Add text (if present)
  116. X   ^A   All select
  117. X   ^B   Box-ify selections
  118. X   ^C   Copy selections (in place)
  119. X   ^D   Delete selections
  120. X   ^E   Ellipse-ify selections
  121. X   ^F   Force<+key>: 0=reset/1-9=size/Bld/Nrm/Itl/Lft/Rht/Cen
  122. X   ^G   Group selections
  123. X   ^L   Refresh display
  124. X   ^N   No select (deselect all)
  125. X   ^O   Output PIC \filename\
  126. X   ^P   Pop (ungroup -- instantiate) selected groups
  127. X   ^Q   Quit
  128. X   ^R   Read \filename\
  129. X   ^Sc  Special function escape
  130. X   ^Td  Tickmarks (on/off)
  131. X   ^U   Undo selections (undelete, untransform)
  132. X   ^V   Vector-ify selections
  133. X   ^W   Write \filename\
  134. X   ^X   Cut lines (selections scissor normal lines)
  135. X
  136. X[2] Interaction Model
  137. X
  138. XLemming uses two devices for interaction: the keyboard and the mouse.
  139. XThe mouse is used to specify targets (operands) which will receive some
  140. Xaction, the keyboard is used to initiate action (operations). This is a
  141. Xsimple extension to the "vi" interaction model, in which the motion keys
  142. X(h,j,k,l) have been replaced by the mouse as a pointing device.
  143. X
  144. XOnly one button of the mouse is required (the biped, triped and quadraped
  145. Xmembers of the species function identically, and will possibly become
  146. Xextinct due to natural selection in the distant future). Keyboard commands
  147. Xare control keys, which are struck without any <cr>, as in "vi". The <esc>
  148. Xand <tab> control keys are used most heavily, so in practice the user places
  149. Xthe left pinkie near the left edge on the keyboard, while the right hand runs
  150. Xthe mouse (Left-handed members of the human species might find this awkward,
  151. Xbut in the distant future...).
  152. X
  153. XMouse Interaction:
  154. X
  155. XThe mouse may be used to "click" or "drag". Clicking means "point, button
  156. Xdown, button up". Drag means "button down, move the mouse, button up".
  157. XIn all cases, clicking the mouse will place the "mark" (a green plus sign)
  158. Xsomewhere on the display, either in free space, or upon some nearby object.
  159. X
  160. XThe Display:
  161. X
  162. XThe display shows all graphics objects in the editor workspace. In addition,
  163. Xthe hardware cursor shows the current mouse location. A static cursor belonging
  164. Xto the editor (called the "mark") may also be present. Its presence and
  165. Xplacement are controlled by the user. A tick grid may also be turned on to aid
  166. Xmeasuring and aligning.
  167. X
  168. XColors:
  169. X
  170. XLemming runs with a black background, and white foreground objects. The
  171. Xcurrent mark location is either green or red, depending on whether the
  172. Xmark is placed in free space, or is on (in close proximity) to some object.
  173. XItems change from white to red when selected. Text entered on the user
  174. Xcommand line is green. In short, white objects depict actual entities, not
  175. Xfeedback information. On the SUN (or other two-color X-window systems),
  176. Xcolored objects are depicted using greyscale, created by stippling.
  177. X
  178. XModes:
  179. X
  180. XThere are no modes in the sense of a hierarchical control structure.
  181. XSome actions behave differently as a function of screen selections or
  182. Xin the presence of a "mark". In this sense, "mode" can be inferred by
  183. Xthe display. For instance, if no objects are selected, then "delete" is
  184. Xmeaningless.
  185. X
  186. X"Selected object mode": An object turns red when it is selected. This
  187. Xchanges the meaning of a few commands.
  188. X
  189. X"Mark present mode": When the mouse has been clicked somewhere, the mark
  190. Xappears, and this can affect the behavior of some subsequent operations.
  191. X
  192. X[3] Tutorial
  193. X
  194. XStart Up:
  195. X
  196. XRun the appropriate version of "lemming" with no other command line
  197. Xparameters. The screen will be cleared to black, and a crosshair cursor
  198. Xwill smoothly track the current mouse location. The screen may be refreshed
  199. Xat any time using the <^L> command.
  200. X
  201. XSimple Drawing:
  202. X
  203. XThese three control keys will be used together with the mouse:
  204. X
  205. X<esc> -- deselect all and remove mark (thereby turning off any modes)
  206. X<tab> -- select/deselect the object(s) under the current mark, if present
  207. X<^D>  -- delete selected object(s).
  208. X
  209. XWhen nothing is selected and the mark is present, then subsequent clicks
  210. Xwill draw a line and advance the mark to the new cursor position. Thus,
  211. Xit is possible to draw two lines of three vertices thus:
  212. X
  213. X<click> <click> <click> <esc> <click> <click> <click>
  214. X
  215. XHere the <esc> removes the mark (nothing was selected, but would have been
  216. Xdeselected also by this action) and allows the line-chain to be broken.
  217. X
  218. XEdit While Drawing:
  219. X
  220. XIf the last segment in a chain doesn't belong, then the sequence:
  221. X
  222. X<tab> <^D>
  223. X
  224. Xwill select the object under the mark (which is attached to the trailing
  225. Xvertex of the line-chain), and the <^D> will remove that segment.
  226. X
  227. XDragging the Mark:
  228. X
  229. XIf nothing is selected (as when entering new lines), then dragging the mark
  230. X(click down directly upon the mark, move to new location, release), will
  231. Xmove the mark and all lines and text strings connected at this vertex.
  232. XSo if the last segment in a draw chain is misplaced, simply button down
  233. Xon the mark, and carry the vertex to the new location. You should also
  234. Xtry adjusting the location of an intermediate vertex with this operation.
  235. X
  236. XSelection:
  237. X
  238. XFor mass selection, the <^A> key selects all objects, the <^N> selects
  239. Xno objects (unlike the <ESC>, the latter leaves the mark untouched).
  240. X
  241. XSelections are cumulative. Consider our example: two chains of three lines.
  242. XWe wish to delete the middle segment (the second and fifth entered) of each
  243. Xchain. Begin by making sure everything is deselected, then click the mark
  244. Xon the middle object of chain one, hit <tab>, thereby selecting it, while
  245. Xremoving the mark. Now click the middle line of the second chain. The mark
  246. Xwill be placed there. Note that because of the previous selection, the
  247. X"draw line" function is omitted -- the mark simply moved. Again, hit <tab>
  248. Xto select the middle line in the chain. With both objects now selected,
  249. Xhit <^D> to delete all selections. Use the <^U> to undelete the selections,
  250. Xand go on:
  251. X
  252. XArea Selection:
  253. X
  254. XWhen dragging is done, but NOT beginning upon the mark, an area selection
  255. Xis done. This operation takes place independent of any modes (i.e. independent
  256. Xof the presence/absence of both the mark and selected objects).
  257. X
  258. XTo select all of the first chain, imagine the bounding box which surrounds
  259. Xall three objects within the first chain. Move to the upper-left-hand corner
  260. Xof that imaginary box, button down, and drag diagonally to the lower-rh
  261. Xcorner, then release. All objects FULLY (ie, both endpoints) within the
  262. Xselection rectangle will be selected. Again, this operation is cumulative.
  263. XThe mark should now be off (if it was left on, remove it without deselecting
  264. Xthese objects by clicking directly upon it. Now mark that middle chain item
  265. Xonce again, which is now selected. Again, use the <tab> command, and it will
  266. Xtoggle its selection status: it will become deselected.
  267. X
  268. XAreas selection may be used to perform deselection as well. The latter
  269. Xoccurs when "uphill" selecting is done, i.e., when the drag motion moves
  270. Xup (in y) the display screen.
  271. X
  272. XOther Objects - Boxes and Ellipses:
  273. X
  274. XNow two of six objects are selected. Type <^B>, and all selected vectors
  275. Xbecome boxes (the vector defining the diagonal). Type <^E> and they become
  276. Xellipses. Type <^V> and they are vectors once again. Note: on the Vax-8600,
  277. Xthe <^V> command (also <^Q> and <^O>) must be literal quoted with an
  278. Xadditional <^V> command. So to convert back to vectors (on the 8600), type
  279. X<^V> <^V>.
  280. X
  281. XOther Objects - Text:
  282. X
  283. XText is entered simply by typing in a string (not containing control
  284. Xcharacters). To place text somewhere, place the mark, type the text, and
  285. Xhit return. (Or, type the text, place the mark and hit return. Or, type
  286. Xthe text, hit return (nothing happens - no mark), place the mark, hit
  287. Xreturn again). When the text is entered, the mark moves downward by the
  288. Xbaseline distance (plus some small line leading) to facilitate the
  289. Xentry of blocks of text.
  290. X
  291. XObject Attributes:
  292. X
  293. XObjects may have certain attributes forced upon them. This is done by
  294. Xusing the <^F> (force) command, followed by a single additional (and case
  295. Xinsensitive) keystroke. For instance, text is center adjusted by default.
  296. XEnter some text, select it (area selection will probably be the fastest
  297. Xway, as the mark has moved), and then type <^F>L to left justify it.
  298. XLeft justifying a line has the property of placing an arrowhead at
  299. Xat the ending vertex of the line, right adjusting places the arrowhead at
  300. Xthe beginning vertex. The various modes are presented below:
  301. X
  302. X<^F>: key    name        if text         if box,line,ellipse
  303. X      N      normal      regular         solid
  304. X      B      bold        embolden        dashed
  305. X      I      italic      italicize       dotted
  306. X      L      left        left just       trailing arrowhead (lines only)
  307. X      R      right       right adjust    forward arrowhead (lines only)
  308. X      C      center      center adjust   no arrowheads
  309. X      0      reset       (defaults: center, regular)
  310. X      1-9    (font)      select font N   select line thickness N
  311. X
  312. X
  313. X[4] Advanced Techniques
  314. X
  315. XCommand Line Parameters:
  316. X
  317. XIf Lemming is started with command line parameters, each parameter not
  318. Xbeginning with a hyphen is taken to be a lemming input file (with file
  319. Xextension rules applying, as described under "Reading" below). All input
  320. Xfiles are read. At present one command line switch (-p) is recognized.
  321. XIt causes pic output to be written, based on the name of the first command
  322. Xline input file appearing, with the ".pic" suffix appended.
  323. X
  324. XThe LEMRC file:
  325. X
  326. XAdditional object attributes may be triggered by use of <^F><digit).
  327. XWhen digit is zero, all attributes (including the bold/italic and left/right
  328. Xattributes) are reset. When <digit> is in the range 1-9, a corresponding
  329. Xattribute is taken from the nth line of the .lemrc file. The contents of this
  330. Xfile may be viewed from within the editor by using the help-slash (i.e. <^^>/)
  331. Xfacility. This file is generally used to set up the default fonts for both the
  332. Xdisplay and for PIC/troff. However, an entry for line width attributes also
  333. Xexists. Consider this simple .lemrc file:
  334. X
  335. X.lemrc file 18/05/87
  336. X         |-----------------------  Fonts  ------------------------------|
  337. XPnt Line |Display       Typeset                 PostScript              |
  338. XSz  Thkn                Rg/Bld/Itl              Rg/Bld/Itl
  339. X------------------------------------------------------------------------
  340. X12 1    TimesRoman      TR TB TI        Times-Bold Times-Bold Times-Bold
  341. X12 1    Helvetica       SR SB SI        Times-Bold Times-Bold Times-Bold
  342. X.end of file
  343. X
  344. XOnly lines beginning with digits are treated as data lines. Using this file,
  345. X<^F>1 (the default) will select TimesRoman -- a serif font, and <^F><2> will
  346. Xselect Helvetica -- a sans-serif font. Typing <^F>0 will clear the font of
  347. Xemphasis and centering, and reset to the default font (font 1). Under some
  348. Xversions, line thickness may not appear on the user display, but will on
  349. Xoutput. The PostScript font entries are present for expansion. The .lemrc is
  350. Xnormally read from the current directory, otherwise the user's home directory
  351. Xis checked. Failing this, a single default font is used. When a document
  352. Xcontains more fonts than present in the .lemrc, absent fonts will display and
  353. Xprint using font 1. This font is also used for help text.
  354. X
  355. XTick Gridding:
  356. X
  357. XTick marks may be placed on the active window with the <^T><digit> command.
  358. XThe tick marks may be removed with the <^T> command (a non-symmetric toggle).
  359. XThe tick grid restricts the location of the (green) mark when it is placed in
  360. Xfree space to lie coincident with a visible tick point. It does not constrain
  361. Xthe tracking of the cursor, nor selections to active object features, such
  362. Xas box edges or line endpoints.
  363. X
  364. XWhen setting tick marks, a <digit> value in the range 1-5 sets a square grid
  365. Xwith a spacing of 2^n. For instance, <^T><4> gives a 16x16 tick grid. The
  366. Xcurrent implementation limits the visible tick marks to an 8x8 grid to avoid
  367. Xdisplay clutter, though 2x2 and 4x4 gridding are permitted.
  368. X
  369. XDigit values "6" (mnemonic for "hexagon") through "9" provide hexagonal (and
  370. Xthus triangular) gridding with edge lengths of 8,16,32 and 64 pixels,
  371. Xrespectively. Here the vertical and horizontal tick pitch are not equal, and
  372. Xthe user might have to redefine the tick offset in some applications (below).
  373. X
  374. XWhen ticking is enabled and the mark is present, the tick grid produced is
  375. Xoffset in x and y so that a tick point coincides with the current mark. This
  376. Xis particularly important with hexagonal tick grids, and allows the
  377. Xconstruction of radials with orientations that are multiple of sixty degrees
  378. X(through one of six near neighbor tick points), or thirty degrees (through
  379. Xclose neighbors). Analogously, square tick grids allow the construction of
  380. Xninety and forty-five degree lines, through immediate and near tick points.
  381. X
  382. XSelections:
  383. X
  384. XSelecting a line near an endpoint moves to the exact endpoint. Selecting
  385. Xon a line snaps to some portion of the line that is n/12ths of the way
  386. Xalong the line. This makes it easy to subdivide lines by 1/2ths, 1/4ths and
  387. X1/6ths.
  388. X
  389. XSelecting a rectangle moves to one of nine compass points along the boxes
  390. Xedges, or in its center. These points are analogous to PIC's "nw", "ne", "w",
  391. X"c" etc. location designations.
  392. X
  393. XSelecting an ellipse moves to one of five points: "n", "s", "e", "w" or "c".
  394. XThis avoids the intersection testing for selecting elsewhere along the curve.
  395. XAdditionally, this allows the ellipse to be subsequently changed to a box
  396. X(if the aesthetics of this style is better), with no fear that the lines
  397. Xdon't connect properly. This is because ellipses and rectangles touch
  398. X("kiss") and these four cardinal points, and are concentric.
  399. X
  400. XUndo:
  401. X
  402. XThe <^U> undo operation normally is used to undelete the last set of objects
  403. Xdeleted. It will also undo the effects of a tug, move or special transformation
  404. Xcommand. In the latter cases the undo is effected internally by specifng the
  405. Xreverse transformation. Should intervening selections have taken place, the
  406. Xundo will not reconstruct the original situation (this "feature" can be
  407. Xexploited to the user's gain). Undo in the case of tugging may not always
  408. Xwork exactly, as the reverse operation might tug new objects which became
  409. Xattached at the conclusion of the original operation.
  410. X
  411. XGrouping:
  412. X
  413. XTyping <^G> will take all selected objects and place them in a common
  414. X"group". A grouping associates objects for the sake of selection and
  415. Xdeselection, thereby facilitating moving, copying and deleting. The
  416. Xgrouping is nameless, and overrides any previous grouping (groupings
  417. Xare non-hierarchical). However, multiple disjoint groups may exist
  418. Xconcurrently. When a file is written, grouping information is lost. When
  419. Xit is read in, all items are placed in a new group, and the read input is
  420. Xselected. This makes it simple to composite foreground and background data
  421. Xtaken from respective files.
  422. X
  423. XUngrouping is done with the <^P> (pop grouping) command, which instantiates
  424. Xall selected objects into ungrouped, atomic entities.
  425. X
  426. XCopying:
  427. X
  428. XThe <^C> command replicates all selected objects, placing them in a new
  429. Xgroup, and displaying them offset from their original data. Most often
  430. Xit is immediately followed by a move command to place the data properly.
  431. XThe offset is by one tick unit (or by eight units if ticking is off) in both
  432. Xthe up and left directions.
  433. X
  434. XMoving:
  435. X
  436. XDragging the mark when objects are selected will move all selected objects
  437. Xby the vector length defined between the mark position and the button
  438. Xup position.
  439. X
  440. XCutting:
  441. X
  442. XThe <^X> key will allow all selected lines to fragment (cut) any deselected
  443. Xlines into disjoint pieces. The cut lines retain all properties of grouping
  444. Xand style. This is useful when "shaving" a set of lines to some slope, or
  445. Xfor doing hidden line removal by hand, opaquing the contents behind some
  446. X"polygon", etc. There is (at present) no way to uncut lines (i.e. rejoin
  447. Xlines with common vertex and similar slope).
  448. X
  449. XTugging:
  450. X
  451. XPlacing the mark on some object, and the dragging the mark (if no other
  452. Xobjects are selected) will "tug" that portion of the object. For instance,
  453. Xtugging a line's enpoint will move only that vertex, thus reorienting the
  454. Xline. Tugging any of the eight perimeter compass points of a box will align
  455. Xone or more edges while leaving the remaining edges untouched. Tugging of
  456. Xellipses is similar, except that only the four cardinal compass points along
  457. Xthe perimeter may be moved. Tugging the interior of an object (the central
  458. Xpoint for text, ellipses or boxes, or any non-endpoint on a line) is a short-
  459. Xhand way to "move" that object while it is still deselected. Because the mark
  460. Xbecomes red when its placed on an object, this is an indication that tugging
  461. Xwill take place if the mark is dragged from some object.
  462. X
  463. XSpecial Orientation Facilities:
  464. X
  465. XA sub-menu of orientation facilities is available with the <^S> (special)
  466. Xcommand. These operations include mirroring, ninety-degree rotation,
  467. X(non-)differential scaling, arbitrary rotation and alignment. All require the
  468. Xpresence of the mark to define a local origin, and operate only on selected
  469. Xobjects. The "Flip" command will mirror objects about the vertical axis passing through the mark. The "CCW" command rotates objects ninety degrees counter-
  470. Xclockwise about the mark.
  471. X
  472. XFor remaining commands, the mark must be coincident with exactly two line
  473. Xendpoints. One line must be "normal", and the other have an arrowhead (i.e.,
  474. Xis left or right adjusted) not on the mark (origin). This small orientation
  475. Xsymbol defines the basis of transformation for various commands. The arrowed
  476. Xline is called the source basis, the normal line the destination basis.
  477. XThe magnify command resizes objects such that the length of the source basis
  478. Xwill be mapped into the length of the destination basis. In fact, if the bases
  479. Xare selected, this transformation will provide a visual confirmation of this.
  480. XThe stretch command performs differential magnification to map the source
  481. Xbasis onto the destination basis. The rotate command similarly orients the
  482. Xsource basis onto the destination basis. Finally, the align command orients
  483. Xthe source basis onto the Y (up) unit vector, and the destination basis onto
  484. Xthe X (across) unit vector. This general affine transformation allows for the
  485. Xeasy rectification of input data which has been digitized with some residual
  486. Xscaling or orientation.
  487. X
  488. XReading:
  489. X
  490. XThe <^R> command prompts for a filename for an input file, which is read
  491. Xin if found. Failing this, the operation is reattepted on {filename.lem},
  492. Xwhich allows the omission of the .lem extension in most cases. Reading may
  493. Xalso be specified by running the program "lemming {filename}", which invokes
  494. Xthe read command on the command line specified file. Any number of files may
  495. Xbe specified on the command line. If "filename" is not found, the command is
  496. Xfails. If found, the dataset is checked to see if it is a valid lemming file,
  497. Xand the read is aborted if it fails this test.
  498. X
  499. XData read in belongs to a unique group (see Grouping) and is left selected,
  500. Xto facilitate positioning of fore and background files.
  501. X
  502. XWriting:
  503. X
  504. XThe <^W> command works analogously to the <^R> command for filing. The
  505. Xexternal representation is in ASCII. Because the file contains no
  506. Xhierarchical structure, users may edit it at will. At present, no provision
  507. Xfor overwrite testing is done.
  508. X
  509. XPic Output:
  510. X
  511. XThe <^O> key generates PIC style output, given an output file name.
  512. XRemember to save your drawing as a lemming file as well, the program does
  513. XNOT read PIC files for input. Vax 8600 users may have to use the sequence
  514. X<^V><^O> to trigger this command.
  515. X
  516. XQuitting:
  517. X
  518. XThe <^Q> command quits. Vax-8600 users will need to use <^V><^Q>. No
  519. Xconfirmation is done (at the moment). Quitting requires confirmation
  520. Xif the workspace has been changed.
  521. X
  522. XFine Points:
  523. X
  524. XWhen the mark is clicked, it is aligned to any object in its near proximity.
  525. XFailing this, it will align to the nearest grid point, if present. Finally,
  526. Xnear vertical and near horizontal motion align the grid point to the axis of
  527. Xmotion. This makes rectilinear drawing simple.
  528. X
  529. XArea selection is most often done (it has been observed) by dragging from
  530. Xtop to bottom. Some versions of "lemming" are experimenting with uphill
  531. Xdragging (mouse moving up the display, prior to release) as a means to
  532. Xdeselect objects within an area.
  533. X
  534. XText may contain embedded TeX or Troff commands as an aid to setting
  535. Xmathematics or other specialized strings. The length of the display text is
  536. Xthen no longer a good approximation to the hardcopy version.
  537. X
  538. XHelp:
  539. X
  540. XThe control(^) character is used for system help. If followed immediately
  541. Xby a single keystroke, it responds with the action defined by that key.
  542. XIf followed by a "space" character, help for all commands is given.
  543. X
  544. XThe command <^></> may be used to view all current fonts in their three
  545. Xemphases (regular, bold and italic), as described under the .lemrc section.
  546. XThe current default font and emphasis is flagged with the marker "[x]", where
  547. Xx is 'L' 'R' or 'C' to described the current alignment mode in effect.
  548. X
  549. XMachine Considerations:
  550. X
  551. XThe SUN version depicts selection ("red") by using a simple stipple pattern
  552. Xto make "grey". This causes dotted and dashed lines to become rather sparse,
  553. Xbut they are still distinguishable.
  554. X
  555. X
  556. END_OF_document
  557. if test 24201 -ne `wc -c <document`; then
  558.     echo shar: \"document\" unpacked with wrong size!
  559. fi
  560. # end of overwriting check
  561. fi
  562. echo shar: End of shell archive.
  563. exit 0
  564. -- 
  565.  
  566. Rich $alz            "Anger is an energy"
  567. Cronus Project, BBN Labs    rsalz@bbn.com
  568. Moderator, comp.sources.unix    sources@uunet.uu.net
  569.